import config from './config'
import Axios from 'axios';
import router from '../router'

// 引入提示框
import { MessageBox } from 'element-ui'
import { Message } from 'element-ui'
// import { options } from 'less';


const axios = Axios.create({
    baseURL: config.url,
    timeout: 150000, // request timeout
});

// 添加请求拦截器  作用是在请求发送前进行一些操作
axios.interceptors.request.use(
    function(config) {
        // console.log(config, 'config');
        // 获取存储token中的值
        let userInfo = JSON.parse(localStorage.getItem('userInfo')) || ''
        let tokens = userInfo.token

        // 在发送请求之前做些什么
        if (tokens && typeof tokens === 'string') {
            config.headers.token = tokens;
            // config.headers.Authorization = 'Bearer ' + tokens;
        }
        return config;
    },
    function(error) {
        // 抛出错误
        Message.error('请求中错误:' + error);
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 添加响应拦截器  作用是在接收到响应后进行一些操作
axios.interceptors.response.use(
    function(response) {
        // 对响应数据做点什么
        if (response.status == 200) {
            if (response.data.code != 1) {
                MessageBox.alert(response.data.msg, '错误', {
                    confirmButtonText: "确定",
                    type: "error",
                }).then(() => {
                    if (response.data.code == 401) {
                        localStorage.removeItem("userInfo");
                        router.replace("/login");
                    }
                })

                // if (response.data.msg == "login timeout or not login") {
                //     localStorage.removeItem("userInfo");
                //     localStorage.removeItem("permissions");
                //     router.replace("/login");
                // }
                // if (response.data.msg == "登录超时,请重新登录.") {
                //     localStorage.removeItem("userInfo");
                //     localStorage.removeItem("permissions");
                //     router.replace("/login");
                // }
            }
        } else {
            // 获取成功后的错误提示
            MessageBox.alert('系统错误', '错误', {
                confirmButtonText: "确定",
                type: "error",
            })
        }


        return response;
    },
    function(error) {
        console.log(error);
        // 抛出错误提示
        MessageBox.alert(error, '错误', {
            confirmButtonText: "确定",
            type: "error",
        }).then(() => {
            if (error == "Error: Request failed with status code 401") {
                localStorage.removeItem("userInfo");
                localStorage.removeItem("permissions");
                router.replace("/login");
            }
        })

        // 对响应错误做点什么
        return Promise.reject(error);
    }
);



export default axios
